package dssd.acciones;


import dssd.constantes.Constantes;
import dssd.modelo.Conductor;
import dssd.modelo.Usuario;
import dssd.servicios.ConductorService;
import dssd.servicios.IConductorService;
import dssd.servicios.ILoginService;
import dssd.servicios.IUsuarioService;
import dssd.servicios.UsuarioService;

import java.util.Date;


/**
 * <p> Validate a user login. </p>
 */
public  class Login  extends AbstractAccion {

	private IConductorService conductorService;
	private IUsuarioService usuarioService;
	private ILoginService loginService;

	public String execute() throws Exception {
		Usuario usuario = this.getLoginService().login(this.getDni(), this.getPassword());
		
		if ((usuario != null) &&(!usuario.getRoles().isEmpty())){
	        this.getSession().put("usuario", usuario);
			if (usuario.tieneRol(Constantes.CONDUCTOR)){
				Conductor conductor = this.getConductorService().buscarConductor(usuario);
				this.getSession().put(Constantes.CONDUCTOR, conductor);	        
		        //controlarSolicitud(conductor);    
			}
	        return SUCCESS;
		}
		addActionError("Usuario o password invalido! Por favor, intentelo nuevamente!");
		return ERROR;
    
  }

    public IConductorService getConductorService() {
		return conductorService;
	}

	public void setConductorService(IConductorService conductorService) {
		this.conductorService = conductorService;
	}

    public IUsuarioService getUsuarioService() {
		return usuarioService;
	}

	public void setUsuarioService(IUsuarioService usuarioService) {
		this.usuarioService = usuarioService;
	}





	/**
     * <p>Field to store User username.</p>
     * <p/>
     */
    private String dni = null;


    
    public String getDni() {
		return dni;
	}

	public void setDni(String dni) {
		this.dni = dni;
	}





	private String password = null;


    /**
     * <p>Provide User password.</p>
     *
     * @return Returns the User password.
     */
    public String getPassword() {
        return password;
    }

    /**
     * <p>Store new User password</p>
     *
     * @param value The password to set.
     */
    public void setPassword(String value) {
        password = value;
    }

	public void setLoginService(ILoginService loginService) {
		this.loginService = loginService;
	}

	public ILoginService getLoginService() {
		return loginService;
	}

}